import { createI18n } from 'vue-i18n'
import { watch } from 'vue';
import zh from './zh/index'
import en from './en/index'

// 获取保存的语言或浏览器默认语言
const savedLocale = localStorage.getItem('locale')
const browserLang = navigator.language.includes('zh') ? 'zh-US' : 'en-US'
const defaultLocale = savedLocale || browserLang || 'zh-US'

const i18n = createI18n({
  legacy: false,
  globalInjection: true,
  locale: defaultLocale,
  fallbackLocale: 'zh-US',
  silentTranslationWarn: true,
  missingWarn: false,
  silentFallbackWarn: true,
  fallbackWarn: false,
  messages: {
    'zh-US': zh,
    'en-US': en,
  },
})

// 保存语言选择
watch(i18n.global.locale, (newLocale) => {
  localStorage.setItem('locale', newLocale)
})

// 热更新支持
if (import.meta.hot) {
  import.meta.hot.accept(['./zh/index', './en/index'], ([zhModule, enModule]) => {
    if (zhModule) i18n.global.setLocaleMessage('zh-US', zhModule.default)
    if (enModule) i18n.global.setLocaleMessage('en-US', enModule.default)
  })
}

export default i18n